package com.zyzd.greendaodemo.db;

import com.zyzd.greendaodemo.MyApplication;
import com.zyzd.greendaodemo.dao.SportInfoDao;
import com.zyzd.greendaodemo.dao.UserInfoDao;
import com.zyzd.greendaodemo.entity.SportInfo;
import com.zyzd.greendaodemo.entity.UserInfo;

import java.util.List;

/**
 * Created by lzy on 2018/5/22 0022.
 * description ${TODO}
 * <p>
 * Changed by somebody on 2018/5/22 0022
 * description ${TODO}
 */
public class DataBaseTool {

    /**
     * 增加运动信息
     */
    public static long insertSportInfo(UserInfo userInfo, SportInfo sportInfo) {
        sportInfo.setUserId(userInfo.getId());//增加运动表时要指定其父表（用户表id和用户表）
        sportInfo.setUserInfo(userInfo);
        return DbManager.getDaoSession(MyApplication.getContext()).insertOrReplace(sportInfo);
    }

    public static SportInfoDao getSportInfoDao(){
        return DbManager.getDaoSession(MyApplication.getContext()).getSportInfoDao();
    }

    public static UserInfoDao getUserInfoDao(){
        return DbManager.getDaoSession(MyApplication.getContext()).getUserInfoDao();
    }

    /**
     * 增加用户信息
     */
    public static long insertUserInfo(UserInfo info) {
        return getUserInfoDao().insertOrReplace(info);
    }

    /**
     * 查运动信息
     */
    public static List<SportInfo> searchSportInfo(UserInfo userInfo) {
        return userInfo.getSportInfo();//查找运动表则需要通过用户表来获取运动表的集合然后再遍历找到所需运动表
    }

    /**
     * 查用户信息
     */
    public static List<UserInfo> searchUserInfo() {
        //惰性加载
        List<UserInfo> list = getUserInfoDao().queryBuilder().listLazy();
        return list;
    }

    /**
     * 删除某条用户信息
     *
     * @param i 删除数据的id
     */
    public static void deleteUserInfo(long i) {
        getUserInfoDao().deleteByKey(i);
        //当然Greendao还提供了其他的删除方法，只是传值不同而已
    }

    /**
     * 修改某条运动信息
     */
    public static void correctSportInfo(SportInfo info) {
        getSportInfoDao().update(info);
    }

    /**
     * 修改某条用户信息
     */
    public static void correctUserInfo(UserInfo info) {
        getUserInfoDao().update(info);
    }
}
